Web page transmission, in which a user selects web page content and receives objects, is a core part of the Internet experience for Internet users. While the experience of users is typically a single selection followed by the viewing of a web page that is presented on the screen, the process of presenting the web page on the screen can involve a large number of objects and multiple request/response round-trip communications from the user system to a system that is providing the web page.
One method of improving the performance of web page transmission and presentation is the caching of previously downloaded object for reuse in a later web page transaction. Since significant amounts of network traffic involve repeated communication of the same information, local caching of objects is one way to optimize network communications. Another method of improving the performance of web page transmission involves prefetching which may be applied to hypertext transport protocol (HTTP) communications. HTTP prefetching involves pre-requesting content on behalf of a client or browser before a request for that content is actually generated as a typical HTTP request and response in the course of a typical web page transaction. Certain prefetching embodiments involve pre-requesting content based on predictions about a future user selection without any actual action or selection by the user. Other HTTP prefetching systems, such as the systems discussed here, involve pre-requesting content in response to a user action or selection as part of a web page transaction. In such systems, when content is prefetched, it may become possible to satisfy the request for that content locally (with regard to the client or browser) or at a location with a lower latency to the user, thereby negating the need to transmit the request and wait for the response from a content server. For example, in cases where there exists high latency between the client generating the request and the server which responds with the context requested, each negated request/response may avoid the penalty for such latency, thereby potentially reducing the total time required to satisfy the entire series of requests for the client. This may result in an accelerated end user experience.
In some caching and prefetching systems, the system may have a set of metrics for determining when a file should or should not be prefetched, and when the files may be stored in cache and for how long. Such systems may create errors or fail to identify certain areas for optimization. For example, under certain circumstances, incorrect objects may be prefetched repeatedly based on incorrect models, or it may be difficult to quantify exceptions to a rule, resulting in resources being wasted to prefetch an object that will never be used. In other systems, rules related to the freshness of cache objects may involve the re-communication of an object which is already in a cache. This may also simply involve revalidation of the object where a check is made to see if the object is still fresh, which requires a round trip communication. Systems and methods described herein may function to improve issues related to the time associated with rendering a web page through improved caching with a cache hinting system.